package com.recSystem.Service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.recSystem.Entity.DO.PaperDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.recSystem.Entity.DTO.*;
import com.recSystem.Entity.DTO.Param.*;
import com.recSystem.Entity.POJO.HttpResponse;

import java.util.List;

public interface PaperService extends IService<PaperDO> {

    HttpResponse<NewPaperSearchDTO> advancedSearchPaper(PaperAdvancedSearchParam param , String token);
    // TODO 不合理，service不应该这样写，参数返回值都不对
    HttpResponse<NewPaperSearchDTO> searchPaper(PaperSearchParam param , String token);

    HttpResponse generatePaperKeywords(PaperIdParam param, String token);

    HttpResponse<List<PaperCiteNetDTO>> getCitations(ArxivIdParam param, String token);

    HttpResponse<List<PaperCiteNetDTO>> mock_rec(ArxivIdParam param, String token);

    HttpResponse<List<PaperCiteNetDTO>> getReferences(ArxivIdParam param, String token);

    HttpResponse<AuthorInfoDTO> getPapersByAuthorId(AuthorInfoParam param, String token);

//    HttpResponse<AuthorInfoDTO> getAuthorInfo(AuthorInfoParam param, String token);

    HttpResponse addBrowsing(PaperIdParam param, String token);

    HttpResponse deleteBrowsing(PaperIdParam param, String token);

    HttpResponse modifyFavorite(PaperIdParam param, String token);

    HttpResponse<DataPaperDTO> getPaperDetail(PaperIdParam param, String token);

    IPage<PaperBrowsingDTO> getBrowsingPapersPage(int userId, int maxLength, int offset);

    IPage<PaperFavoriteDTO> getFavoritePapersPage(int userId, int maxLength, int offset);

    PaperDTO getPaperDTOById(Integer paperId, Integer userId);

    HttpResponse<List> gettagInfo(String token);

    HttpResponse<List> searchTag(PaperSearchParam param, String token);

    HttpResponse<List> getVersions(PaperIdParam param, String token);
}
